package km

import (
	"os"
	"path/filepath"
)

// FileInfo 结构体用来存储文件信息
type FileInfo struct {
	Name  string // 文件名
	Path  string // 完整路径
	Size  int64  // 文件大小，仅适用于文件
	IsDir bool   // 是否为目录
}

// WalkDir 递归遍历目录并收集文件信息
func WalkDir(root string) ([]FileInfo, error) {
	var files []FileInfo

	err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}
		fileInfo := FileInfo{
			Name:  info.Name(),
			Path:  path,
			Size:  info.Size(),
			IsDir: info.IsDir(),
		}
		files = append(files, fileInfo)
		return nil
	})

	if err != nil {
		return nil, err
	}

	return files, nil
}
